package Thread;

public class Demo17 {
    private  static int count = 0;

    public static void main(String[] args) throws InterruptedException {
        Thread t1 = new Thread(()->{
            for (int i = 0; i < 50000; i++) {
                count ++;
            }
        });

        Thread t2 = new Thread(()->{
           for (int i = 0;i < 50000; i++){
               count ++;
               /*
               count++是三个指令,可能会出现CPU执行了其中一个指令或者多个指令被CPU调度走的情况,无法预测
               基于上面的情况,两个线程之间可能同时对count进行++,就容易出现bug
                */
           }
        });

        t1.start();


        t2.start();
        t1.join();
        t2.join();
        /*
        这个写法本质上相当于t1先执行,等t1执行完了,t2再执行
        t1和t2是串行执行
         */

/*
本质上是t1和t2并发执行

        t1.join();
        t2.join();

*/

        System.out.println("count=" + count);//可能得到小于5w的情况
    }
}
